<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<style>
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote {
    margin: 0;
    padding: 0;
}
body {
    font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", Arial, sans-serif;
    font-size: 13px;
    line-height: 18px;
    color: #737373;
    background-color: white;
    margin: 10px 13px 10px 13px;
}
table {
	margin: 10px 0 15px 0;
	border-collapse: collapse;
}
td,th {	
	border: 1px solid #ddd;
	padding: 3px 10px;
}
th {
	padding: 5px 10px;	
}

a {
    color: #0069d6;
}
a:hover {
    color: #0050a3;
    text-decoration: none;
}
a img {
    border: none;
}
p {
    margin-bottom: 9px;
}
h1,
h2,
h3,
h4,
h5,
h6 {
    color: #404040;
    line-height: 36px;
}
h1 {
    margin-bottom: 18px;
    font-size: 30px;
}
h2 {
    font-size: 24px;
}
h3 {
    font-size: 18px;
}
h4 {
    font-size: 16px;
}
h5 {
    font-size: 14px;
}
h6 {
    font-size: 13px;
}
hr {
    margin: 0 0 19px;
    border: 0;
    border-bottom: 1px solid #ccc;
}
blockquote {
    padding: 13px 13px 21px 15px;
    margin-bottom: 18px;
    font-family:georgia,serif;
    font-style: italic;
}
blockquote:before {
    content:"\201C";
    font-size:40px;
    margin-left:-10px;
    font-family:georgia,serif;
    color:#eee;
}
blockquote p {
    font-size: 14px;
    font-weight: 300;
    line-height: 18px;
    margin-bottom: 0;
    font-style: italic;
}
code, pre {
    font-family: Monaco, Andale Mono, Courier New, monospace;
}
code {
    background-color: #fee9cc;
    color: rgba(0, 0, 0, 0.75);
    padding: 1px 3px;
    font-size: 12px;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
}
pre {
    display: block;
    padding: 14px;
    margin: 0 0 18px;
    line-height: 16px;
    font-size: 11px;
    border: 1px solid #d9d9d9;
    white-space: pre-wrap;
    word-wrap: break-word;
}
pre code {
    background-color: #fff;
    color:#737373;
    font-size: 11px;
    padding: 0;
}
sup {
    font-size: 0.83em;
    vertical-align: super;
    line-height: 0;
}
* {
	-webkit-print-color-adjust: exact;
}
@media screen and (min-width: 914px) {
    body {
        width: 854px;
        margin:10px auto;
    }
}
@media print {
	body,code,pre code,h1,h2,h3,h4,h5,h6 {
		color: black;
	}
	table, pre {
		page-break-inside: avoid;
	}
}
</style>
<title>代码规范文档</title>

</head>
<body>
<h1>代码规范文档</h1>

<ul>
<li>1.重要的方法使用  #pragma mark - 方法描述</li>
<li>2.代码注释使用// 后面留一个空格,//与代码对齐</li>
<li>3.两行代码之间留有空行</li>
</ul>


<pre><code>#pragma mark - 重写此方法拦截到导航控制器的push操作在里面来判断是否要隐藏tabBar
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {

    // 只要不是导航控制器的根控制器就让tabBar隐藏
    if (self.viewControllers.count &gt; 0) {

    // 隐藏那个控制器下面的tabBar就用那个控制器去调用下面这个方法
        viewController.hidesBottomBarWhenPushed = YES;
    }

    // 隐藏tabBar这句话一定要放在push操作之前
    [super pushViewController:viewController animated:animated];

}
</code></pre>

<ul>
<li>4.方法里面重要的代码使用:</li>
</ul>


<pre><code># pragma mark - 方法描述
// 让状态栏为白色
- (UIStatusBarStyle)preferredStatusBarStyle {

    // MARK: - 方法描述
    return UIStatusBarStyleLightContent;
}
</code></pre>

<ul>
<li>5.运算符两边要有空格</li>
</ul>


<pre><code>if(a == b)
{
    return 1;
}
</code></pre>

<ul>
<li><p>6.方法以及参数命名,请遵守正规命名规范</p></li>
<li><p>7.模型中的属性需要标清注释</p></li>
<li><p>8.MVC文件夹的名字需要加后缀s</p>

<ul>
<li>Models</li>
<li>Views</li>
<li>Controllers</li>
</ul>
</li>
<li><p>9.注意:创建tableView以及CollectionView等view时候,为了确保cell正确创建了,一定要在cell返回前给cell设置背景颜色!便于观察是否正常创建成功</p></li>
<li><p>10.注释出为什么做了一些事，而不仅仅是做了什么</p></li>
<li><p>11.关闭代码中的警告!!</p></li>
<li><p>12.不能直接拖拽其他工程中的脚本文件到项目中然后再修改名字,就算功能相同,需要拷贝代码的时候,也要在我们的工程中手动创建脚本,使用复制粘贴的方式,保证脚本的前缀描述是自己</p></li>
<li><p>13.建议书写属性名不要和系统一样,避免发生莫名其妙的问题;特别注意的是label;属性名不要写成textLabel</p></li>
<li><p>14.判断if书写方式
建议这样写,注意:if后面只能是只有一行代码的时候才能这样写</p></li>
</ul>


<pre><code>- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == 0) return 44;
    if (indexPath.row == 1) return 80;
    if (indexPath.row == 2) return 50;
    return 44;
}

而不是

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == 0) {
        return 44;
    }else if (indexPath.row == 1){
        return 80;
    }else if (indexPath.row == 2){
        return 50;
    }else{
        return 44;
    }
}
</code></pre>

<ul>
<li><p>15.代码调试可以使用return替换断点</p></li>
<li><p>16.在导航控制中,或它的子控制器,设置导航栏的标题应该用self.navigationItem.title = @“标题”而不建议self.title = @“标题”;</p></li>
<li><p>17.在导航控制中,或它的子控制器,设置导航栏的标题应该用self.navigationItem.title = @“标题”而不建议self.title = @“标题”;</p></li>
<li><p>18.抽取方法,或者写工具类,能写类方法,尽量写成类方法,减少了创建对象的步骤,比如给UIView扩充分类加载xib,viewWithXib;</p></li>
</ul>

</body>
</html>